package com.briup.day18;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

/**
 * 我在编写软件时，可以将程序根据其功能不同，分为
 * 客户端与服务器，客户端与服务器可以分别安装部署，
 * 如客户端安装在用户的设备上，服务器就安装在公司的设备上；
 * 客户端与服务器之间使用网络进行通信
 */
public class Client {
    public static void main(String[] args) throws IOException {
        // 在Java中如果要创建出一个能够与服务器进行通信的客户端，
        // 可以使用Socket类进行创建，
        // 在创建时需要指定与其进行通信的服务器的ip地址和端口号
        Socket client = new Socket("172.16.16.138", 8888);
        // 创建完客户端之后，客户端就会主动通过TCP协议的三次握手与服务器建立连接；
        // 前提是服务器已启动

        // 在客户端与服务器建立连接之后，可以通过客户端对象向双方建立的通信信道中发送数据
        OutputStream oos = client.getOutputStream();
        oos.write("你好，这里是客户端！".getBytes());
        oos.flush();
        // 数据写完后，通过shutdownOutput()告知对方数据写出完毕
        client.shutdownOutput();

        // 接收来自于服务器的数据
        InputStream is = client.getInputStream();
        byte[] bytes = is.readAllBytes();
        System.out.println(new String(bytes));

        oos.close();
        client.close();
    }
}
